javascript

您所在的位置:网站首页 node 日志文件 javascript

javascript

2023-09-19 18:39| 来源: 网络整理| 查看: 265

平常都使用console来打印 node 脚本执行时需要看到的信息,但这些信息也就只能在控制台查看。假如你希望将打印的信息记录到文件查看的话,那就往下看看吧。

1、前言

期望:

每次运行脚本时,生成log日志存储到本地每次执行脚本,之前日志内容清空

需要了解的知识点:

node.js 中的fs模块node.js 中的new console.Console2、什么是 fs

使用 node.js 对日志进行存储,就一定会对本地文件的增删改查,那么我们需要用到fs。

如果你写过 node,想必你应该见过它fs,fs全称为文件系统(File System)。文件系统简单来说就是通过 Node 来操作系统中的文件。

fs 不需要 npm install,node 中自带,直接引用即可:

const fs = require('fs');

本文将会使用 fs 的fs.createWriteStream(path, options)方法,用于创建可读流,用法如下:

/** * @param1 path * @param2 options */ let fs = require('fs'); let ws = fs.createWriteStream('./1.txt',{ flags:'w', //文件的打开模式 mode:0o666, //文件的权限设置 encoding:'utf8', //写入文件的字符的编码 highWaterMark:3, //最高水位线 start:0, //写入文件的起始索引位置 autoClose:true, //是否自动关闭文档 })

以此用于在日志记录后于本地生成日志文件。

3、new console.Console(stdout[, stderr][, ignoreErrors])

在 node.js 中 console 模块提供了基础的调试功能。使用很简单,常用的API主要有 console.log()、console.error()。

此外,可以基于Console类,方便的扩展出自己的console实例,比如把调试信息打印到文件里,而部署输出在控制台上。

const fs = require('fs'); const file = fs.createWriteStream('./outPut.txt'); let logger = new console.Console(file, file); // 调用 logger.log('hello'); 复制代码

此时,调用logger.log内容将会输出到 outPut.txt里,而不是打印到控制台。

4、node.js 生成日志文件方法

在了解完 node 的两个模块fs和console后,我们开始写这个简单而实用的方法,先创建 index.js:

// index.js const fs = require('fs'); let options = { flags: 'w', // encoding: 'utf8', // utf8编码 } let stderr = fs.createWriteStream('./a.log', options); // 创建logger let logger = new console.Console(stderr); // 真实项目中调用下面即可记录错误日志 logger.log('这是一条日志1'); logger.log('这是一条日志2'); logger.log('这是一条日志3');

打开终端执行node logger.js:

$ node index.js

此时根目录将会生成 a.log 文件

好了,最简易版的就这样完成了。但是当时在此执行node logger.js时,日志将会累加上去,这样会增加本地存储的负担。所以我希望的是每次执行的时候清空一下。

那就来改写一下 index.js, node.js 中改写依旧使用fs的方法fs.writeFile:

// 清空a.log内容 fs.writeFile('./a.log', '', function (err) { if(err){ console.log(err); } }); 复制代码

至此,我期望得到的日志文件就完成了,完整代码为:

// index.js const fs = require('fs'); let options = { flags: 'w', // encoding: 'utf8', // utf8编码 } let stderr = fs.createWriteStream('./a.log', options); // 创建logger let logger = new console.Console(stderr); fs.writeFile('./a.log', '', function (err) { if(err){ console.log(err); } }); // 真实项目中调用下面即可记录错误日志 logger.log('这是一条日志1'); logger.log('这是一条日志2'); logger.log('这是一条日志3');

大家可以复制到自己的本地去跑跑看,终端执行一下:

node index.js5、其他

当然在此基础上你可以拓展其它内容,比如给日志中增加时间戳、区分日志类型储存等。

以上,如有问题或建议欢迎指正。

参考资料:

nodejs.cn/api/console…

nodejs.cn/api/fs.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3